package com.test29_文件;

import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

/**
 * 获取目录信息
 */
public class Demo04_DirInfo {

    @Test
    public void test1() {
        File file = new File("F:\\学习文档");
        if (file.exists() && file.isDirectory()) {
            {
                // 获取所有子文件名称
                System.out.println("【list()方法执行结果】");
                Arrays.stream(file.list()).forEach(System.out::println);
            }
            {
                // 获取所有子文件
                System.out.println("【listFiles()方法执行结果】");
                Arrays.stream(file.listFiles()).forEach(System.out::println);
            }
        }
    }

    /**
     * 遍历目录
     */
    @Test
    public void test2() {
        // File file = new File("F:\\学习文档");
        File file = new File("F:" + File.separator);
        info(file);
    }

    public static void info(File file) {
        if (file.isDirectory()) {
            // File[] list = file.listFiles();
            // 找出所有pdf文件
            File[] list = file.listFiles(new FileFilter() {
                @Override
                public boolean accept(File f) {
                    if (f.isDirectory()) {
                        return true;
                    }
                    return f.getName().endsWith(".pdf");
                }
            });
            if (list != null) {
                for (File temp : list) {
                    info(temp);     // 递归继续列出
                }
            }
        } else {
            System.out.println(file);   // 直接输出文件信息
        }
    }
}
